package com.example.nio.commons;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sun.org.apache.xpath.internal.operations.Bool;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;


/**
 * 会话记录
 */
@SuppressWarnings("serial")
@NoArgsConstructor
@Data
@Accessors(chain = true)
public class StatisReport {
	private String statisticsId;//会话流水
	private String channel;//渠道（wechat）
	private Integer direction;//会话方向（1、主动服务2、被动服务）
	private Integer bussinessType;//业务类型	1、系统异常2、退保批改3、发票4、查账和退费5、佣金和绑卡6、产品咨询7、黑名单8、产品页面确认9、营销活动10、营销活动结果11、投诉与建议12、其他
	private String bussinessNote;//业务记录
	private String callReason;//来电原因
	private Integer contect;//是否接通（1、是2、否3、队列放弃）
	private Date liststart;//队列开始时间
	private Date listend;//队列结束时间
	private Integer listalltime;//队列持续时长(s)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date callStart;//通话开始时间
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date callEnd;//通话结束时间

	private String callStartStr;//通话开始时间str
	private String callEndStr;//通话结束时间str
	private Integer callAllTime;//通话时长(s)
	private int callCount;//会话次数
	private String openId;//客户id
	private String nickName;//客户昵称
	private String aliasName; // 备注
	private String agentId;//坐席id
	private String department;//组名字
	private Integer closeReason;//挂机原因（1、在线客服2、微信）
	private String hangupReason;//挂机原因（/隔开）
	private Integer satisfaction;//满意度星级 1.非常满意 2.满意 3.一般 4.不满意
	private Integer isDelete;//是否删除 	 1是0否
	private Integer isInvite;//是否邀请评价 	 1是0否
	private Integer isTrans;//是否转接 	 1是0否


	// 接受消息时间 发送消息时间 用来计算客服响应时间
	private Date receiveTime;  // 用户消息接受时间
	private Date replyTime;		// 客服回复消息时间
	private Integer respondTime;	// 客服响应时长
	private Integer isRespond = 1; // 是否已经回复 默认未回复
	private Boolean isLast = false;  // 最后发送的消息是否是用户

	private String timeStart;//
	private String timeEnd;//

	private Integer messageSource; // 消息来源 1（web） 2（微信）

	public Integer getMillisecBetweenDate(Date before, Date after){
		return (int)((after.getTime() - before.getTime()) / 1000);
	}
}
